class Solution {
public:
    int getheight(TreeNode* root)
    {
        if(root==nullptr)
            return 0;
        int r=getheight(root->left);
        int l=getheight(root->right);
        return max(r,l)+1;
    }
    /*
    什么是平衡二叉树
    1、它是一个空数；
    2、左右两颗子树的高度差都不超过1&&左右子树分别是平衡二叉树
    */
    bool IsBalanced_Solution(TreeNode* root) {
        if(root==nullptr) return true;
        //当前结点的左子树不是平衡二叉树
        if(!IsBalanced_Solution(root->left)) return false;
        //当前结点的右子树不是平衡二叉树
        if(!IsBalanced_Solution(root->right)) return false;
        int left=getheight(root->left);
        int right=getheight(root->right);
        if(abs(left-right)>1)
            return false;
        return true;
    }   
};